package memcache;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemCachedClientFactory {
	
    private volatile static MemCachedClient instance = null;
    
    private MemCachedClientFactory(){
    	
    }
    public static MemCachedClient getInstance(){
        //先检查实例是否存在，如果不存在才进入下面的同步块
        if(instance == null){
            //同步块，线程安全的创建实例
            synchronized (MemCachedClientFactory.class) {
                //再次检查实例是否存在，如果不存在才真正的创建实例
                if(instance == null){
                	//初始化：memcache 
            		String[] serverlist = { "192.168.0.190:11111" };
            		SockIOPool pool = SockIOPool.getInstance();
            		pool.setServers(serverlist);
            		pool.initialize();
            		
            		//创建一个client对象
                    instance = new MemCachedClient();
                }
            }
        }
        return instance;
    }
}
//public class Singleton {
//    
//    private Singleton(){}
//    /**
//     *    类级的内部类，也就是静态的成员式内部类，该内部类的实例与外部类的实例
//     *    没有绑定关系，而且只有被调用到时才会装载，从而实现了延迟加载。
//     */
//    private static class SingletonHolder{
//        /**
//         * 静态初始化器，由JVM来保证线程安全
//         */
//        private static Singleton instance = new Singleton();
//    }
//    
//    public static Singleton getInstance(){
//        return SingletonHolder.instance;
//    }
//}
